iT邦幫忙

2024 iThome 鐵人賽

DAY 30
1
Security

資安這條路:系統化學習網站安全與網站滲透測試系列 第 30

資安這條路:Day 30 SSDLC 安全開發軟體生命週期─部署與維運階段與整合 OWASP 資源

  • 分享至 

  • xImage
  •  

前言

本文整合 OWASP Cheat Sheet Series、OWASP DependencyCheck、OWASP DevSecOps、OWASP Proactive Controls 作為 SSDLC 的參考。

部署與維運階段

為什麼部署與維運階段很重要

在安全開發發展生命週期 (SSDLC) 中,部署與維運階段是確保系統安全穩定運作的關鍵階段。

  • 系統上線後,會面臨來自全世界的威脅與攻擊
    • 原因是因為許多駭客會每天進行掃描
    • 也可以參考 Shodan Search Engine 網站
    • 可以瞭解全世界的 IP 對應 Port、服務、已知漏洞
  • 部署和維運需要確保系統的可用性
    • 讓授權使用者隨時都能可靠地使用系統和資料
  • 需要符合日益嚴格的資料保護和隱私法律要求
    • 例如
      • 歐盟的GDPR
      • 臺灣的個資法和資安管理法

部署與維運階段要做什麼

部署階段

  • 環境設定
    • 將正式環境設定完成
    • 包括相關設定、效能和安全措施
  • 資料遷移與系統整合
    • 確保正式環境的資料正確無誤
    • 並與其他系統順利整合
  • 上線與監控
    • 讓系統上線,並監控系統執行狀況
    • 確保系統穩定持續運作

維運階段

  • 持續監控和日誌分析
    • 使用安全資訊和事件管理 (SIEM) 系統
      • 收集日誌資料
      • 分析異常行為和潛在威脅
      • 設定警報通知系統管理員或資安事件團隊
  • 定期更新與修補管理
    • 定期檢查和更新
      • 作業系統
      • 應用程式
      • 第三方套件和系統組件
    • 用修補管理工具自動化修補安全漏洞
  • 安全版本控制與變更管理
    • 使用版本控制系統 (如 Git 或 SVN) 管理程式碼和設定修改
    • 施嚴格的變更管理流程
      • 確保所有修改經過審查、測試和授權
  • 定期安全稽核和風險評鑑
    • 確保安全措施符合資安政策和標準
    • 評估帳號和權限管理
    • 定期進行風險評鑑,以掌握風險的變化和影響
  • 事件回應 (IR) 與災難復原 (DR) 規劃
    • 制定事件回應計畫 (IRP)
    • 制定災難復原計畫 (DRP)
    • 定期進行測試和演練
      • 確保在安全事件或災難發生時,能夠有效地應對和復原

部署與維運階段的成效

  • 提升系統整體安全性
    • 減少安全漏洞和威脅
    • 降低資料外洩和系統中斷的風險
  • 確保業務持續性
    • 讓系統穩定可靠地執行
    • 維持業務流程順暢
    • 減少停機時間和經濟損失
  • 符合法規要求
    • 遵守資料保護和隱私法律法規
    • 避免法律訴訟和罰款
  • 增強民眾信任度
    • 提供安全的系統和服務
    • 建立民眾對組織的信任和忠誠度
  • 有效對抗網路威脅
    • 持續更新安全措施和漏洞管理
    • 防範已知和未知的威脅
    • 保護系統免受攻擊

部署與維運階段的實際實作

在安全開發生命週期(SSDLC)中
部署與維運階段是確保系統安全、穩定執行的關鍵
以下詳細說明如何實際實作這些階段的各項措施

部署階段實作

環境設定
  • 自動化環境部署
    • 使用基礎設施即程式碼(IaC)工具
      • 如 Terraform、Ansible
        • 自動化設定正式環境
        • 確保一致性和可重複性
  • 安全相關
    • 網路安全
      • 設定防火牆、網路分段和 VPN
      • 實施網路存取控制清單(ACL)
      • 保護內部網路存取與權限
    • 系統安全
      • 關閉不必要的服務和埠號
      • 設定適當的檔案權限
      • 安裝防毒和入侵防禦系統
    • 身份驗證與授權
      • 實施多因素驗證(MFA)
      • 設定基於角色的存取控制(RBAC)
  • 容器化與編排
    - 使用 Docker 和 Kubernetes 等容器技術
    - 確保應用程式的一致性和可擴展性
  • 效能優化
    • 資源監控
      • 部署 Prometheus、Grafana 等監控工具
      • 即時監控系統資源和效能
    • 負載平衡
      • 使用 Nginx、HAProxy 等負載平衡器
      • 分散流量,提升系統的可用性和回應速度
資料遷移與系統整合
  • 資料遷移計畫
    • 資料備份與驗證
      • 在遷移前備份所有重要資料
      • 使用校驗和等方法確保資料完整性
    • 自動化資料遷移
      • 開發和測試自動化資料遷移腳本
      • 使用 ETL 工具如 Talend、Apache NiFi 進行複雜的資料轉換
  • 系統整合測試
    • API 測試與管理
      • 確保與其他系統的 API 介面正常運作
      • 使用 API gateway 如 Kong、Apigee 管理和保護 API
    • 功能與性能測試
      • 驗證整合後的系統功能和性能符合預期
上線與監控
  • 漸進式上線策略
    • 藍綠部署與金絲雀發布
      • 採用藍綠部署或金絲雀發布策略
      • 逐步轉移流量,降低上線風險
    • 回滾機制
      • 準備快速回滾方案,以應對緊急情況
  • 持續監控
    • 日誌管理與分析
      • 使用 ELK Stack(Elasticsearch、Logstash、Kibana)或 Splunk
      • 集中收集和分析日誌
    • 警報設定
      • 設置自動化警報系統
      • 如 PagerDuty,及時通知異常情況

維運階段實作

持續監控和日誌分析
  • 部署 SIEM 系統
    - 使用 Splunk、IBM QRadar 或 ArcSight 等 SIEM 解決方案
    - 即時監控安全事件
  • 異常行為檢測
    - 利用機器學習或規則引擎,部署 Zeek、Suricata 等工具
    - 識別異常的使用者行為或網路流量
  • 安全事件回應
    - 設定自動化流程,當發生安全事件時,迅速通知相關人員並採取行動
定期更新與修補管理
  • 自動化更新流程:
    • 設定管理工具
      • 使用 Ansible、Chef 或 Puppet
      • 自動部署更新和設定變更
    • 容器化部署
      • 利用 Docker、Kubernetes
      • 方便地更新和管理應用程式
  • 補丁管理政策
    • 漏洞掃描
      • 使用 Nessus、OpenVAS 等漏洞掃描工具
      • 定期檢查系統漏洞
    • 緊急與定期補丁
      • 針對高風險漏洞,立即部署修補程式
      • 設定週期性更新計畫,保持系統最新
  • 測試環境驗證
    - 在測試環境中驗證修補程式,確保不影響系統穩定性
安全版本控制與變更管理
  • 版本控制系統
    - 使用 GitLab 或 GitHub 進行版本控制
    - 實施分支保護和強制程式碼審查
  • CI/CD 自動化
    - 採用 Jenkins、GitLab CI 等工具
    - 自動化部署流程
  • 變更管理系統
    - 使用 JIRA、Redmine 或 ServiceNow 等工具
    - 追蹤和管理變更請求,確保所有修改經過審查、測試和授權
定期安全稽核和風險評鑑
  • 內部與外部安全稽核
    • 內部稽核
      • 定期檢查系統的安全設定和合規性
      • 使用 OWASP ZAP、Acunetix 等工具進行安全測試
    • 外部稽核
      • 聘請第三方進行滲透測試和安全評估
  • 風險評估與管理
    • GRC 工具
      • 使用 RSA Archer 等治理、風險與合規(GRC)工具
      • 管理風險評估流程
    • 風險評估工具
      • 識別和評估新的安全風險
      • 掌握風險變化和影響
事件回應(IR)與災難復原(DR)規劃
  • 事件回應計畫(IRP)
    • 事件分類與流程
      • 定義不同級別的安全事件和相應的回應流程
    • 團隊培訓
      • 定期培訓團隊的事件處理能力
      • 使用 TheHive、MISP 等平台協調管理
  • 災難復原計畫(DRP)
    • 資料備援
      • 設定異地備份和資料同步機制
      • 利用 AWS、Azure 等雲端備份服務
    • 復原流程
      • 制定詳細的系統復原步驟
      • 確保在災難後能快速恢復運營
  • 演練與測試
    • 模擬演練
      • 定期進行災難情境模擬
      • 測試計畫的有效性
    • 計畫更新
      • 根據演練結果
      • 持續改進 IRP 和 DRP

成效評估與持續改進

  • 關鍵績效指標(KPI)
    • 建立 KPI 儀表板,追蹤安全措施的有效性
    • 如事件回應時間、漏洞修補速度
  • 安全成熟度評估
    • 參考 CMMI、ISO 27001 等標準
    • 定期進行安全成熟度評估
  • 持續改進流程
    • 根據事件分析、新興威脅和法規要求
    • 調整安全策略和措施

部署與維運階段的成效

  • 提升系統整體安全性
    • 主動防禦
      • 透過持續監控和更新
      • 主動防範安全威脅
    • 減少風險
      • 降低資料外洩和系統中斷的風險
  • 確保業務持續性
    • 高可用性
      • 利用負載平衡和冗餘設計
      • 確保系統穩定執行
    • 快速恢復
      • 在故障或災難發生時,能迅速恢復服務
      • 維持業務流程順暢
  • 符合法規要求
    • 合規性報告
      • 定期生成符合 GDPR、個資法等法規的報告
    • 資料保護
      • 實施資料加密、匿名化等措施,保護使用者隱私
  • 加強民眾信任度
    • 透明度
      • 公開安全政策和措施,增加使用者信任。
    • 客戶支援
      • 提供迅速且專業的服務,提升使用者滿意度。
  • 有效對抗網路威脅
    • 威脅情報分享
      • 參與產業內的安全情報分享,及時獲取最新威脅資訊
    • 安全意識培訓
      • 對員工進行網路安全培訓,防範社交工程攻擊

小結

實際上實作部署與維運階段需要
技術措施、流程管理和人員培訓的多方努力

組織可以根據自身的規模、需求和資源
選擇適合的工具和流程
並隨時根據新的威脅和技術發展進行調整

OWASP Cheat Sheet Series

專案位置

https://cheatsheetseries.owasp.org/index.html

專案內容

這是一個提供各種資訊安全相關主題速查表(Cheat Sheet)的專案
速查表涵蓋網路安全和應用程式安全領域
旨在為開發人員和安全專業人士提供簡潔實用的指南

主要內容

  1. 安全速查表: 共93份涵蓋不同主題的速查表。
  2. 程式碼範例: 許多速查表附有多種程式語言的程式碼片段,包括Java、JavaScript、Python、C#等。
  3. 字母索引: 提供從A到X的字母分類,方便查找特定主題。

重要主題範例

  • 身份驗證(Authentication)
  • 授權(Authorization)
  • 跨站腳本攻擊(XSS)防禦
  • SQL注入防禦
  • 安全程式設計
  • 加密儲存
  • 錯誤處理
  • 輸入驗證
  • 會話管理
  • API安全(如REST、GraphQL)

OWASP Cheat Sheet Series 在軟體安全開發生命週期(SSDLC)中的應用

1. 需求階段

2. 設計階段

3. 開發階段

4. 測試階段

5. 部署階段

6. 維護階段

這個架構提供在 SSDLC 各階段使用OWASP Cheat Sheet Series的具體方法,有助於團隊在開發過程中系統性地實施安全最佳實作。

OWASP DependencyCheck

https://github.com/jeremylong/DependencyCheck

DependencyCheck 是一個開源的軟體組成分析(SCA)工具
主要用於檢測專案相依性中的已公開漏洞

主要特點

  1. 透過識別相依性套件的通用平台枚舉(CPE)標識符來檢測漏洞
  2. 生成報告,連結到相關的 CVE (通用漏洞和暴露) 條目
  3. 支持多種開發環境和構建工具

使用方式

DependencyCheck 可以以多種方式使用:

  1. 指令介面工具
  2. Maven 插件
  3. Gradle 插件
  4. Ant 任務
  5. Jenkins 插件
  6. Docker 容器

重要注意事項

  1. 需要 Java 11 或更高版本
  2. 強烈建議使用 NVD API 密鑰以加快更新速度
  3. 在 CI 環境中使用時需要考慮緩存策略,以避免超過 API 限制

主要功能

  • 檢測多種技術的相依性漏洞(.NET, Go, Node.js, Ruby等)
  • 生成詳細的漏洞報告
  • 可與主流 CI/CD 工具整合
  • 支持自定義設定和抑制規則

OWASP DevSecOps 指南介紹

https://github.com/OWASP/DevSecOpsGuideline

目標與理念

  • 核心目標是"盡早發現安全問題",無論是設計層面還是應用程式漏洞
  • 促進"左移"安全文化,將安全考慮融入開發流程的早期階段
  • 適用於各種規模的公司,特別是那些已經擁有 DevOps 流程的組織

基本步驟

  • 以 OWASP 主動控制清單作為起點,實施 10 大安全控制
    • OWASP Top 10 主動控制 是一組安全措施
      • 旨在主動防止 Web 應用程式中出現常見的安全漏洞
      • 專注於在軟體開發生命週期 (SDLC) 的早期階段就建構安全性
      • 不是僅依靠被動的安全措施
        • 例如在攻擊發生後進行修補
  • 利用 OWASP 軟體保證成熟度模型(SAMM)來確定適合組織成熟度的安全要求

OWASP Top 10 Proactive Controls

  • C1:實作存取控制:存取控制(或授權)是關於授予或拒絕來自使用者、程式或處理流程的特定請求。它涉及檢查定義的策略,以確定是否允許給定主體存取給定物件,也包含授予和撤銷這些權限的行為。存取控制通常在多個層級運作,需要所有不同層級和存取路徑使用相同的存取控制檢查以防止安全漏洞。
  • C2:使用密碼學來保護資料:這強調了保護敏感資料的重要性,例如密碼、信用卡號、健康記錄、個人資訊和商業機密,特別是在這些資料受到隱私法規(如歐盟的 GDPR)或金融資料保護規則(如 PCI DSS)約束時。這包含在儲存、處理或傳輸過程中對資料進行加密。
  • C3:驗證所有輸入並處理例外:輸入驗證確保只有格式正確的資料才能進入軟體系統元件。這有助於防止注入攻擊,這些攻擊會試圖將資料輸入混淆為可執行命令。應用程式應在使用資料之前檢查其語法和語義有效性。
  • C4:從一開始就處理安全性問題:這強調了在設計新應用程式時建立安全架構的重要性。安全架構應遵循清晰、透明、易於安全地使用和最小化攻擊面的原則。它還應該利用知名的架構模式,這些模式是針對已知安全威脅進行審查和強化的標準解決方案。
  • C5:預設安全設定:這表示產品在出廠時就對常見的攻擊技術具有彈性,無需額外費用。這減輕了開發人員保護系統安全的負擔,為他們提供已安全的產品。
  • C6:確保元件安全:這強調了在軟體開發中使用安全程式庫和軟體框架的重要性。選擇受信任的程式庫和框架涉及考慮來源、普及度、活動、成熟度、複雜性和安全性等因素。確保它們的安全包括維護所有第三方元件的庫存目錄、執行持續檢查並主動更新程式庫和元件。
  • C7:保護數位身分:這涵蓋了數位身分、驗證和工作階段管理的安全性。它包含使用 NIST 800-63b 中定義的驗證保證等級 (AAL)、實作多重要素驗證 (MFA) 和確保安全密碼儲存和復原機制。它還討論了伺服器端和用戶端工作階段管理及其安全含義。
  • C8:利用瀏覽器安全功能:這強調利用瀏覽器提供的安全措施來保護使用者免受各種威脅。它包含實作 HTTP Strict Transport Security (HSTS)、Content Security Policy (CSP)、Referrer-Policy 和其他強化機制,以防止資訊洩露、減少 XSS 的潛在影響、防止 Clickjacking 和控制瀏覽器的高級功能。
  • C9:實作安全日誌記錄和監控:這強調了在應用程式執行時記錄安全資訊以進行入侵偵測、鑑識分析和法規遵循的重要性。安全日誌設計應考慮記錄注入攻擊的預防措施、避免記錄敏感資訊以及保護日誌完整性。
  • C10:停止伺服器端請求偽造:伺服器端請求偽造 (SSRF) 攻擊試圖迫使伺服器代表攻擊者執行請求。防止 SSRF 的方法包括輸入驗證、針對允許清單檢查請求目標以及使用 XML 時安全地配置解析器。

管道實施 (Pipeline Implementation)

指南建議在基本管道中實施以下步驟:

  1. Git 儲存庫掃描 (Git Repository Scanning)
    • 檢測憑證洩漏
  2. 軟體組成分析 (Software Composition Analysis, SCA)
    • 分析和管理第三方元件的安全性
  3. 靜態應用程式安全測試 (Static Application Security Testing, SAST)
    • 在執行前分析原始碼以識別安全漏洞
  4. 基礎設施即程式碼掃描 (Infrastructure as Code Scanning)
    • 掃描 Terraform、HelmChart 等程式碼以找出錯誤設定
  5. 互動式應用程式安全測試 (Interactive Application Security Testing, IAST)
    • 在執行時分析應用程式行為以檢測安全問題
  6. API 安全性測試 (API Security Testing)
    • 確保 API 端點的安全性和正確實施
  7. 動態應用程式安全測試 (Dynamic Application Security Testing, DAST)
    • 在執行時模擬攻擊以發現安全漏洞
  8. 雲原生應用程式保護 (Cloud Native Application Protection Platform, CNAPP)
    • 保護在雲端環境中執行的應用程式
  9. 基礎設施掃描 (Infrastructure Scanning)
    • 檢查底層基礎設施的安全性
  10. 持續掃描和合規性檢查 (Continuous Scanning and Compliance Check)
  • 持續監控和確保符合安全標準

客製化與自動化

  • 鼓勵根據組織的 SDLC 和軟體架構客製化管道步驟
  • 強調逐步實施自動化,特別是對於剛開始的組織

架構與範圍

  • 指南涵蓋三個主要領域:
    • 人員:包括團隊塑造、安全冠軍(Security Champion)和培訓
    • 流程:涵蓋設計、編碼、建置和操作階段
    • 治理:包括資料保護、合規性審核和報告

安全冠軍(Security Champion)簡介

安全冠軍是組織內部的安全推廣者。他們:

  • 不是專職安全人員,而是各部門的普通員工
  • 在日常工作中推廣安全意識和實踐
  • 擔任團隊與安全部門之間的橋樑
  • 協助解決基本安全問題
  • 幫助將安全融入日常工作流程

安全冠軍計劃的目標是提高整個組織的安全意識
讓安全成為每個人的責任
這種方法能更有效地推廣安全文化
並且比單靠資安團隊更經濟實惠

關鍵實踐

  • Threat Modeling(威脅建模)
    • 系統性識別和評估潛在安全威脅的過程
    • 用於設計更安全的系統
  • Secret Management(機密管理)
    • 安全儲存和管理敏感資訊(如密碼、API密鑰)的方法
    • 防止未經授權的存取
  • Container Security(容器安全)
    • 保護容器化應用及其執行環境的安全措施
    • 包括映像掃描和執行時保護
  • Cloud Native Security(雲原生安全)
    • 專為雲端環境設計的安全策略和工具
    • 確保雲端服務和應用的安全
  • Vulnerability Management(漏洞管理)
    • 持續識別、評估、報告和修復系統漏洞的流程
    • 降低被攻擊的風險
  • Penetration Testing and Bug Bounty Programs(滲透測試和漏洞獎勵計劃)
    • 主動尋找系統漏洞的方法
    • 透過模擬攻擊或獎勵外部研究者發現問題來提高安全性

持續改進

  • 追蹤安全成熟度
  • 建立中央漏洞管理儀表板
  • 實施政策即程式碼和安全基準

CI/CD 考慮

  • 利用 CI/CD 作為實施安全措施的有利切入點
  • CI/CD 工具本身可能擴大攻擊面,需要額外的安全控制

OWASP DevSecOps 指南提供了一個全面的框架,幫助組織在整個軟體開發生命週期中系統地整合安全實踐。它強調安全應該是一個持續的、整合的過程,而不僅僅是事後的考慮。這個指南適用於各種規模的組織,並可根據特定需求進行調整和改進。

總結

本文深入探討安全軟體開發生命週期(SSDLC)中的部署與維運階段,強調其在確保系統安全性和穩定性方面的關鍵作用。文章詳細介紹部署與維運階段的具體實施步驟,包括環境設定、資料遷移、系統整合、持續監控等。同時還介紹了 OWASP Cheat Sheet Series 在 SSDLC 各階段的應用,OWASP DependencyCheck 工具的使用,以及 OWASP DevSecOps 指南的核心內容。透過整合這些 OWASP 資源和最佳實踐,開發團隊可以更有效地在整個軟體生命週期中實施安全措施,從而提高系統的整體安全性和可靠性。

小試身手

  1. 在 SSDLC 的部署階段,下列哪項不屬於環境設定的範疇?
    A. 網路安全設定
    B. 系統安全設定
    C. 程式碼審查
    D. 身份驗證與授權設定

    答案:C
    解析:程式碼審查通常屬於開發階段或測試階段的工作,而非部署階段的環境設定範疇。部署階段的環境設定主要包括網路安全、系統安全、身份驗證與授權等方面的配置。

  2. OWASP Cheat Sheet Series 在 SSDLC 的設計階段中,建議使用哪份文件來規劃權限管理?
    A. Secure Product Design Cheat Sheet
    B. Access Control Cheat Sheet
    C. Input Validation Cheat Sheet
    D. Docker Security Cheat Sheet

    答案:B
    解析:在 SSDLC 的設計階段,OWASP Cheat Sheet Series 建議使用 Access Control Cheat Sheet 來規劃權限管理。這份文件提供了有關如何設計和實施有效的存取控制機制的指導。

  3. OWASP DependencyCheck 主要用於什麼目的?
    A. 程式碼品質檢測
    B. 效能測試
    C. 相依套件的已知漏洞檢測
    D. 使用者介面測試

    答案:C
    解析:OWASP DependencyCheck 是一個軟體組成分析(SCA)工具,主要用於檢測專案相依套件中的已公開漏洞。它能夠識別相依套件的通用平台枚舉(CPE)標識符,並連結到相關的 CVE (通用漏洞和暴露) 條目。

  4. 在 OWASP DevSecOps 指南中,下列哪項不屬於基本管道實施步驟?
    A. 軟體組成分析 (SCA)
    B. 靜態應用程式安全測試 (SAST)
    C. 使用者體驗測試
    D. 動態應用程式安全測試 (DAST)

    答案:C
    解析:使用者體驗測試不屬於 OWASP DevSecOps 指南中提到的基本管道實施步驟。指南中的步驟主要聚焦於安全性相關的測試和分析,如 SCA、SAST、DAST 等。

  5. OWASP Top 10 主動控制中的「C7:保護數位身分」包含哪些內容?
    A. 僅包括密碼管理
    B. 僅包括多重要素驗證
    C. 包括驗證、工作階段管理和密碼儲存
    D. 僅包括生物特徵辨識

    答案:C
    解析:OWASP Top 10 主動控制中的「C7:保護數位身分」涵蓋了數位身分、驗證和工作階段管理的安全性。它包含使用驗證保證等級 (AAL)、實作多重要素驗證 (MFA)、確保安全密碼儲存和復原機制,以及討論伺服器端和用戶端工作階段管理及其安全含義。


上一篇
資安這條路:Day 29 SSDLC 安全開發軟體生命週期─測試階段與 OWASP Web Security Testing Guide
系列文
資安這條路:系統化學習網站安全與網站滲透測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言